package model.entities;

import java.util.Collection;

import javax.persistence.*;

@Entity
public abstract class AreaElaboracion extends Area
{
	@Column(name = "cantHorasProductosSemielaborados")
	private float cantidadHorasParaProductosSemielaborados;

	@OneToOne
	@JoinColumn(name = "idResponsable")
	private Empleado responsable;

	@OneToMany
	@JoinColumn(name = "idArea")
	protected Collection<ItemMercaderia> stock;

	public boolean verificarDisponibilidad(ItemCarta itemCarta)
	{
		Collection<ItemIngrediente> reqs = itemCarta.getProducto().getReceta().getIngredientes();

		for (ItemIngrediente ingrediente : reqs)
		{
			for (ItemMercaderia mercaderia : stock)
			{
				if (ingrediente.getIngrediente().equals(mercaderia.getIngrediente()))
				{
					if (ingrediente.getCantidad() > mercaderia.getCantidad())
					{
						return false;
					}
				}
			}
		}

		return true;
	}

	public abstract void elaborar(Producto producto, int cantidad, Mesa mesa);
	
	public float consultarEstadoPlanDeProduccionSemielaborados()
	{
		// TODO
		return 1;
	}

	public static AreaElaboracion getAreaElaboracion(Integer idArea)
	{
		// TODO
		return null;
	}

	public Collection<ItemMercaderia> consultarMercaderia()
	{
		return stock;
	}

	public void setStock(Collection<ItemMercaderia> stock)
	{
		this.stock = stock;
	}

	public float getCantidadHorasParaProductosSemielaborados()
	{
		return cantidadHorasParaProductosSemielaborados;
	}

	public void setCantidadHorasParaProductosSemielaborados(
			float cantidadHorasParaProductosSemielaborados)
	{
		this.cantidadHorasParaProductosSemielaborados = cantidadHorasParaProductosSemielaborados;
	}

	public Empleado getResponsable()
	{
		return responsable;
	}

	public void setResponsable(Empleado responsable)
	{
		this.responsable = responsable;
	}
}
